package org.cl.persist.system.data.dto;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

/**
 * @author chenglei
 */
@Getter
@Setter
@TableName("sys_menu")
public class Menu extends Model<Menu> {

    // ---- 数据库对应字段
    // 菜单ID
    @TableId(type = IdType.AUTO)
    private Integer id;

    // 父菜单ID 默认 0 代表顶级菜单
    private Integer pId = Const.ROOT_PARENT;

    // 菜单的分组 或者说项目名
    private Integer project = 0;

    // 图标 32
    private String icon = "";

    // 菜单名称 32
    private String name;

    // 前端URL 128
    private String path;

    // 菜单权限标识 64
    private String permission;

    // 排序值
    private Integer sort;

    // 菜单类型
    private Integer type = Type.LEFT_MENU.index;

    // 路由缓冲 '1-开启，0- 关闭'
    private Boolean keepAlive = true;

    // 1-显示 0-隐藏
    private Boolean isShow = true;

    // 被谁创建的ID 32
    private String createBy;

    // 创建的时间
    @TableField(fill = FieldFill.INSERT)
    private Date createDate;

    // 被修改人ID 32
    private String updateBy;

    // 修改的时间
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateDate;

    public interface Const {
        int ROOT_PARENT = 0;
    }

    public enum Type {
        /**
         * 左侧菜单
         */
        LEFT_MENU(0),

        /**
         * 顶部菜单
         */
        TOP_MENU(1),

        /**
         * 按钮
         */
        BUTTON(2),

        /**
         * api
         */
        API(3);

        @Setter @Getter
        private int index;

        Type(int index) {
            this.index = index;
        }
    }
}
